1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.purple.conversation;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.glist;
34 import derelict.glib.ghash;
35 import derelict.purple.connection;
36 import derelict.purple.account;
37 import derelict.purple.buddyicon;
38 import core.stdc.time;
39 import core.stdc.config;
40 
41 extern (C):
42 
43 alias _PurpleConversationUiOps PurpleConversationUiOps;
44 alias _PurpleConversation PurpleConversation;
45 alias _PurpleConvIm PurpleConvIm;
46 alias _PurpleConvChat PurpleConvChat;
47 alias _PurpleConvChatBuddy PurpleConvChatBuddy;
48 alias _PurpleConvMessage PurpleConvMessage;
49 alias _Anonymous_0 PurpleConversationType;
50 alias _Anonymous_1 PurpleConvUpdateType;
51 alias _Anonymous_2 PurpleTypingState;
52 alias _Anonymous_3 PurpleMessageFlags;
53 alias _Anonymous_4 PurpleConvChatBuddyFlags;
54 
55 enum _Anonymous_0
56 {
57 	PURPLE_CONV_TYPE_UNKNOWN = 0,
58 	PURPLE_CONV_TYPE_IM = 1,
59 	PURPLE_CONV_TYPE_CHAT = 2,
60 	PURPLE_CONV_TYPE_MISC = 3,
61 	PURPLE_CONV_TYPE_ANY = 4
62 }
63 
64 enum _Anonymous_1
65 {
66 	PURPLE_CONV_UPDATE_ADD = 0,
67 	PURPLE_CONV_UPDATE_REMOVE = 1,
68 	PURPLE_CONV_UPDATE_ACCOUNT = 2,
69 	PURPLE_CONV_UPDATE_TYPING = 3,
70 	PURPLE_CONV_UPDATE_UNSEEN = 4,
71 	PURPLE_CONV_UPDATE_LOGGING = 5,
72 	PURPLE_CONV_UPDATE_TOPIC = 6,
73 	PURPLE_CONV_ACCOUNT_ONLINE = 7,
74 	PURPLE_CONV_ACCOUNT_OFFLINE = 8,
75 	PURPLE_CONV_UPDATE_AWAY = 9,
76 	PURPLE_CONV_UPDATE_ICON = 10,
77 	PURPLE_CONV_UPDATE_TITLE = 11,
78 	PURPLE_CONV_UPDATE_CHATLEFT = 12,
79 	PURPLE_CONV_UPDATE_FEATURES = 13
80 }
81 
82 enum _Anonymous_2
83 {
84 	PURPLE_NOT_TYPING = 0,
85 	PURPLE_TYPING = 1,
86 	PURPLE_TYPED = 2
87 }
88 
89 enum _Anonymous_3
90 {
91 	PURPLE_MESSAGE_SEND = 1,
92 	PURPLE_MESSAGE_RECV = 2,
93 	PURPLE_MESSAGE_SYSTEM = 4,
94 	PURPLE_MESSAGE_AUTO_RESP = 8,
95 	PURPLE_MESSAGE_ACTIVE_ONLY = 16,
96 	PURPLE_MESSAGE_NICK = 32,
97 	PURPLE_MESSAGE_NO_LOG = 64,
98 	PURPLE_MESSAGE_WHISPER = 128,
99 	PURPLE_MESSAGE_ERROR = 512,
100 	PURPLE_MESSAGE_DELAYED = 1024,
101 	PURPLE_MESSAGE_RAW = 2048,
102 	PURPLE_MESSAGE_IMAGES = 4096,
103 	PURPLE_MESSAGE_NOTIFY = 8192,
104 	PURPLE_MESSAGE_NO_LINKIFY = 16384,
105 	PURPLE_MESSAGE_INVISIBLE = 32768
106 }
107 
108 enum _Anonymous_4
109 {
110 	PURPLE_CBFLAGS_NONE = 0,
111 	PURPLE_CBFLAGS_VOICE = 1,
112 	PURPLE_CBFLAGS_HALFOP = 2,
113 	PURPLE_CBFLAGS_OP = 4,
114 	PURPLE_CBFLAGS_FOUNDER = 8,
115 	PURPLE_CBFLAGS_TYPING = 16,
116 	PURPLE_CBFLAGS_AWAY = 32
117 }
118 
119 struct _PurpleConversationUiOps
120 {
121 	void function (PurpleConversation*) create_conversation;
122 	void function (PurpleConversation*) destroy_conversation;
123 	void function (PurpleConversation*, const(char)*, const(char)*, PurpleMessageFlags, time_t) write_chat;
124 	void function (PurpleConversation*, const(char)*, const(char)*, PurpleMessageFlags, time_t) write_im;
125 	void function (PurpleConversation*, const(char)*, const(char)*, const(char)*, PurpleMessageFlags, time_t) write_conv;
126 	void function (PurpleConversation*, GList*, gboolean) chat_add_users;
127 	void function (PurpleConversation*, const(char)*, const(char)*, const(char)*) chat_rename_user;
128 	void function (PurpleConversation*, GList*) chat_remove_users;
129 	void function (PurpleConversation*, const(char)*) chat_update_user;
130 	void function (PurpleConversation*) present;
131 	gboolean function (PurpleConversation*) has_focus;
132 	gboolean function (PurpleConversation*, const(char)*, gboolean) custom_smiley_add;
133 	void function (PurpleConversation*, const(char)*, const(guchar)*, gsize) custom_smiley_write;
134 	void function (PurpleConversation*, const(char)*) custom_smiley_close;
135 	void function (PurpleConversation*, const(char)*) send_confirm;
136 	void function () _purple_reserved1;
137 	void function () _purple_reserved2;
138 	void function () _purple_reserved3;
139 	void function () _purple_reserved4;
140 }
141 
142 struct _PurpleConvIm
143 {
144 	PurpleConversation* conv;
145 	PurpleTypingState typing_state;
146 	guint typing_timeout;
147 	time_t type_again;
148 	guint send_typed_timeout;
149 	PurpleBuddyIcon* icon;
150 }
151 
152 struct _PurpleConvChat
153 {
154 	PurpleConversation* conv;
155 	GList* in_room;
156 	GList* ignored;
157 	char* who;
158 	char* topic;
159 	int id;
160 	char* nick;
161 	gboolean left;
162 	GHashTable* users;
163 }
164 
165 struct _PurpleConvChatBuddy
166 {
167 	char* name;
168 	char* alias_;
169 	char* alias_key;
170 	gboolean buddy;
171 	PurpleConvChatBuddyFlags flags;
172 	GHashTable* attributes;
173 	gpointer ui_data;
174 }
175 
176 struct _PurpleConvMessage
177 {
178 	char* who;
179 	char* what;
180 	PurpleMessageFlags flags;
181 	time_t when;
182 	PurpleConversation* conv;
183 	char* alias_;
184 }
185 
186 struct _PurpleConversation
187 {
188 	PurpleConversationType type;
189 	PurpleAccount* account;
190 	char* name;
191 	char* title;
192 	gboolean logging;
193 	GList* logs;
194 	union
195 	{
196 		PurpleConvIm* im;
197 		PurpleConvChat* chat;
198 		void* misc;
199 	}
200 	PurpleConversationUiOps* ui_ops;
201 	void* ui_data;
202 	GHashTable* data;
203 	PurpleConnectionFlags features;
204 	GList* message_history;
205 }
206 
207 version(Derelict_Link_Static)
208 {
209     extern( C ) nothrow 
210     {
211 	    PurpleConversation* purple_conversation_new(PurpleConversationType type, PurpleAccount* account, const(char)* name);
212         void purple_conversation_destroy(PurpleConversation* conv);
213         void purple_conversation_present(PurpleConversation* conv);
214         PurpleConversationType purple_conversation_get_type(const(PurpleConversation)* conv);
215         void purple_conversation_set_ui_ops(PurpleConversation* conv, PurpleConversationUiOps* ops);
216         void purple_conversations_set_ui_ops(PurpleConversationUiOps* ops);
217         PurpleConversationUiOps* purple_conversation_get_ui_ops(const(PurpleConversation)* conv);
218         void purple_conversation_set_account(PurpleConversation* conv, PurpleAccount* account);
219         PurpleAccount* purple_conversation_get_account(const(PurpleConversation)* conv);
220         PurpleConnection* purple_conversation_get_gc(const(PurpleConversation)* conv);
221         void purple_conversation_set_title(PurpleConversation* conv, const(char)* title);
222         const(char)* purple_conversation_get_title(const(PurpleConversation)* conv);
223         void purple_conversation_autoset_title(PurpleConversation* conv);
224         void purple_conversation_set_name(PurpleConversation* conv, const(char)* name);
225         const(char)* purple_conversation_get_name(const(PurpleConversation)* conv);
226         const(char)* purple_conv_chat_cb_get_attribute(PurpleConvChatBuddy* cb, const(char)* key);
227         GList* purple_conv_chat_cb_get_attribute_keys(PurpleConvChatBuddy* cb);
228         void purple_conv_chat_cb_set_attribute(PurpleConvChat* chat, PurpleConvChatBuddy* cb, const(char)* key, const(char)* value);
229         void purple_conv_chat_cb_set_attributes(PurpleConvChat* chat, PurpleConvChatBuddy* cb, GList* keys, GList* values);
230         void purple_conversation_set_logging(PurpleConversation* conv, gboolean log);
231         gboolean purple_conversation_is_logging(const(PurpleConversation)* conv);
232         void purple_conversation_close_logs(PurpleConversation* conv);
233         PurpleConvIm* purple_conversation_get_im_data(const(PurpleConversation)* conv);
234         PurpleConvChat* purple_conversation_get_chat_data(const(PurpleConversation)* conv);
235         void purple_conversation_set_data(PurpleConversation* conv, const(char)* key, gpointer data);
236         gpointer purple_conversation_get_data(PurpleConversation* conv, const(char)* key);
237         GList* purple_get_conversations();
238         GList* purple_get_ims();
239         GList* purple_get_chats();
240         PurpleConversation* purple_find_conversation_with_account(PurpleConversationType type, const(char)* name, const(PurpleAccount)* account);
241         void purple_conversation_write(PurpleConversation* conv, const(char)* who, const(char)* message, PurpleMessageFlags flags, time_t mtime);
242         void purple_conversation_set_features(PurpleConversation* conv, PurpleConnectionFlags features);
243         PurpleConnectionFlags purple_conversation_get_features(PurpleConversation* conv);
244         gboolean purple_conversation_has_focus(PurpleConversation* conv);
245         void purple_conversation_update(PurpleConversation* conv, PurpleConvUpdateType type);
246         void purple_conversation_foreach(void function (PurpleConversation*) func);
247         GList* purple_conversation_get_message_history(PurpleConversation* conv);
248         void purple_conversation_clear_message_history(PurpleConversation* conv);
249         const(char)* purple_conversation_message_get_sender(PurpleConvMessage* msg);
250         const(char)* purple_conversation_message_get_message(PurpleConvMessage* msg);
251         PurpleMessageFlags purple_conversation_message_get_flags(PurpleConvMessage* msg);
252         time_t purple_conversation_message_get_timestamp(PurpleConvMessage* msg);
253         PurpleConversation* purple_conv_im_get_conversation(const(PurpleConvIm)* im);
254         void purple_conv_im_set_icon(PurpleConvIm* im, PurpleBuddyIcon* icon);
255         PurpleBuddyIcon* purple_conv_im_get_icon(const(PurpleConvIm)* im);
256         void purple_conv_im_set_typing_state(PurpleConvIm* im, PurpleTypingState state);
257         PurpleTypingState purple_conv_im_get_typing_state(const(PurpleConvIm)* im);
258         void purple_conv_im_start_typing_timeout(PurpleConvIm* im, int timeout);
259         void purple_conv_im_stop_typing_timeout(PurpleConvIm* im);
260         guint purple_conv_im_get_typing_timeout(const(PurpleConvIm)* im);
261         void purple_conv_im_set_type_again(PurpleConvIm* im, uint val);
262         time_t purple_conv_im_get_type_again(const(PurpleConvIm)* im);
263         void purple_conv_im_start_send_typed_timeout(PurpleConvIm* im);
264         void purple_conv_im_stop_send_typed_timeout(PurpleConvIm* im);
265         guint purple_conv_im_get_send_typed_timeout(const(PurpleConvIm)* im);
266         void purple_conv_im_update_typing(PurpleConvIm* im);
267         void purple_conv_im_write(PurpleConvIm* im, const(char)* who, const(char)* message, PurpleMessageFlags flags, time_t mtime);
268         gboolean purple_conv_present_error(const(char)* who, PurpleAccount* account, const(char)* what);
269         void purple_conv_im_send(PurpleConvIm* im, const(char)* message);
270         void purple_conv_send_confirm(PurpleConversation* conv, const(char)* message);
271         void purple_conv_im_send_with_flags(PurpleConvIm* im, const(char)* message, PurpleMessageFlags flags);
272         gboolean purple_conv_custom_smiley_add(PurpleConversation* conv, const(char)* smile, const(char)* cksum_type, const(char)* chksum, gboolean remote);
273         void purple_conv_custom_smiley_write(PurpleConversation* conv, const(char)* smile, const(guchar)* data, gsize size);
274         void purple_conv_custom_smiley_close(PurpleConversation* conv, const(char)* smile);
275         PurpleConversation* purple_conv_chat_get_conversation(const(PurpleConvChat)* chat);
276         GList* purple_conv_chat_set_users(PurpleConvChat* chat, GList* users);
277         GList* purple_conv_chat_get_users(const(PurpleConvChat)* chat);
278         void purple_conv_chat_ignore(PurpleConvChat* chat, const(char)* name);
279         void purple_conv_chat_unignore(PurpleConvChat* chat, const(char)* name);
280         GList* purple_conv_chat_set_ignored(PurpleConvChat* chat, GList* ignored);
281         GList* purple_conv_chat_get_ignored(const(PurpleConvChat)* chat);
282         const(char)* purple_conv_chat_get_ignored_user(const(PurpleConvChat)* chat, const(char)* user);
283         gboolean purple_conv_chat_is_user_ignored(const(PurpleConvChat)* chat, const(char)* user);
284         void purple_conv_chat_set_topic(PurpleConvChat* chat, const(char)* who, const(char)* topic);
285         const(char)* purple_conv_chat_get_topic(const(PurpleConvChat)* chat);
286         void purple_conv_chat_set_id(PurpleConvChat* chat, int id);
287         int purple_conv_chat_get_id(const(PurpleConvChat)* chat);
288         void purple_conv_chat_write(PurpleConvChat* chat, const(char)* who, const(char)* message, PurpleMessageFlags flags, time_t mtime);
289         void purple_conv_chat_send(PurpleConvChat* chat, const(char)* message);
290         void purple_conv_chat_send_with_flags(PurpleConvChat* chat, const(char)* message, PurpleMessageFlags flags);
291         void purple_conv_chat_add_user(PurpleConvChat* chat, const(char)* user, const(char)* extra_msg, PurpleConvChatBuddyFlags flags, gboolean new_arrival);
292         void purple_conv_chat_add_users(PurpleConvChat* chat, GList* users, GList* extra_msgs, GList* flags, gboolean new_arrivals);
293         void purple_conv_chat_rename_user(PurpleConvChat* chat, const(char)* old_user, const(char)* new_user);
294         void purple_conv_chat_remove_user(PurpleConvChat* chat, const(char)* user, const(char)* reason);
295         void purple_conv_chat_remove_users(PurpleConvChat* chat, GList* users, const(char)* reason);
296         gboolean purple_conv_chat_find_user(PurpleConvChat* chat, const(char)* user);
297         void purple_conv_chat_user_set_flags(PurpleConvChat* chat, const(char)* user, PurpleConvChatBuddyFlags flags);
298         PurpleConvChatBuddyFlags purple_conv_chat_user_get_flags(PurpleConvChat* chat, const(char)* user);
299         void purple_conv_chat_clear_users(PurpleConvChat* chat);
300         void purple_conv_chat_set_nick(PurpleConvChat* chat, const(char)* nick);
301         const(char)* purple_conv_chat_get_nick(PurpleConvChat* chat);
302         PurpleConversation* purple_find_chat(const(PurpleConnection)* gc, int id);
303         void purple_conv_chat_left(PurpleConvChat* chat);
304         void purple_conv_chat_invite_user(PurpleConvChat* chat, const(char)* user, const(char)* message, gboolean confirm);
305         gboolean purple_conv_chat_has_left(PurpleConvChat* chat);
306         PurpleConvChatBuddy* purple_conv_chat_cb_new(const(char)* name, const(char)* alias_, PurpleConvChatBuddyFlags flags);
307         PurpleConvChatBuddy* purple_conv_chat_cb_find(PurpleConvChat* chat, const(char)* name);
308         const(char)* purple_conv_chat_cb_get_name(PurpleConvChatBuddy* cb);
309         void purple_conv_chat_cb_destroy(PurpleConvChatBuddy* cb);
310         GList* purple_conversation_get_extended_menu(PurpleConversation* conv);
311         gboolean purple_conversation_do_command(PurpleConversation* conv, const(gchar)* cmdline, const(gchar)* markup, gchar** error);
312         void* purple_conversations_get_handle();
313         void purple_conversations_init();
314         void purple_conversations_uninit();
315     }
316 }
317 else
318 {
319     extern( C ) nothrow 
320     {
321 	    alias da_purple_conversation_new = PurpleConversation* function(PurpleConversationType type, PurpleAccount* account, const(char)* name);										
322         alias da_purple_conversation_destroy = void function(PurpleConversation* conv);																									
323         alias da_purple_conversation_present = void function(PurpleConversation* conv);																									
324         alias da_purple_conversation_get_type = PurpleConversationType function(const(PurpleConversation)* conv);																		
325         alias da_purple_conversation_set_ui_ops = void function(PurpleConversation* conv, PurpleConversationUiOps* ops);																
326         alias da_purple_conversations_set_ui_ops = void function(PurpleConversationUiOps* ops);																							
327         alias da_purple_conversation_get_ui_ops = PurpleConversationUiOps* function(const(PurpleConversation)* conv);																	
328         alias da_purple_conversation_set_account = void function(PurpleConversation* conv, PurpleAccount* account);																		
329         alias da_purple_conversation_get_account = PurpleAccount* function(const(PurpleConversation)* conv);																			
330         alias da_purple_conversation_get_gc = PurpleConnection* function(const(PurpleConversation)* conv);																				
331         alias da_purple_conversation_set_title = void function(PurpleConversation* conv, const(char)* title);																			
332         alias da_purple_conversation_get_title = const(char)* function(const(PurpleConversation)* conv);																				
333         alias da_purple_conversation_autoset_title = void function(PurpleConversation* conv);																							
334         alias da_purple_conversation_set_name = void function(PurpleConversation* conv, const(char)* name);																				
335         alias da_purple_conversation_get_name = const(char)* function(const(PurpleConversation)* conv);																					
336         alias da_purple_conv_chat_cb_get_attribute = const(char)* function(PurpleConvChatBuddy* cb, const(char)* key);																	
337         alias da_purple_conv_chat_cb_get_attribute_keys = GList* function(PurpleConvChatBuddy* cb);																						
338         alias da_purple_conv_chat_cb_set_attribute = void function(PurpleConvChat* chat, PurpleConvChatBuddy* cb, const(char)* key, const(char)* value);								
339         alias da_purple_conv_chat_cb_set_attributes = void function(PurpleConvChat* chat, PurpleConvChatBuddy* cb, GList* keys, GList* values);											
340         alias da_purple_conversation_set_logging = void function(PurpleConversation* conv, gboolean log);																				
341         alias da_purple_conversation_is_logging = gboolean function(const(PurpleConversation)* conv);																					
342         alias da_purple_conversation_close_logs = void function(PurpleConversation* conv);																								
343         alias da_purple_conversation_get_im_data = PurpleConvIm* function(const(PurpleConversation)* conv);																				
344         alias da_purple_conversation_get_chat_data = PurpleConvChat* function(const(PurpleConversation)* conv);																			
345         alias da_purple_conversation_set_data = void function(PurpleConversation* conv, const(char)* key, gpointer data);																
346         alias da_purple_conversation_get_data = gpointer function(PurpleConversation* conv, const(char)* key);																			
347         alias da_purple_get_conversations = GList* function();																															
348         alias da_purple_get_ims = GList* function();																																	
349         alias da_purple_get_chats = GList* function();																																	
350         alias da_purple_find_conversation_with_account = PurpleConversation* function(PurpleConversationType type, const(char)* name, const(PurpleAccount)* account);					
351         alias da_purple_conversation_write = void function(PurpleConversation* conv, const(char)* who, const(char)* message, PurpleMessageFlags flags, time_t mtime);					
352         alias da_purple_conversation_set_features = void function(PurpleConversation* conv, PurpleConnectionFlags features);															
353         alias da_purple_conversation_get_features = PurpleConnectionFlags function(PurpleConversation* conv);																			
354         alias da_purple_conversation_has_focus = gboolean function(PurpleConversation* conv);																							
355         alias da_purple_conversation_update = void function(PurpleConversation* conv, PurpleConvUpdateType type);																		
356         alias da_purple_conversation_foreach = void function(void function (PurpleConversation*) func);																					
357         alias da_purple_conversation_get_message_history = GList* function(PurpleConversation* conv);																					
358         alias da_purple_conversation_clear_message_history = void function(PurpleConversation* conv);																					
359         alias da_purple_conversation_message_get_sender = const(char)* function(PurpleConvMessage* msg);																				
360         alias da_purple_conversation_message_get_message = const(char)* function(PurpleConvMessage* msg);																				
361         alias da_purple_conversation_message_get_flags = PurpleMessageFlags function(PurpleConvMessage* msg);																			
362         alias da_purple_conversation_message_get_timestamp = time_t function(PurpleConvMessage* msg);																					
363         alias da_purple_conv_im_get_conversation = PurpleConversation* function(const(PurpleConvIm)* im);																				
364         alias da_purple_conv_im_set_icon = void function(PurpleConvIm* im, PurpleBuddyIcon* icon);																						
365         alias da_purple_conv_im_get_icon = PurpleBuddyIcon* function(const(PurpleConvIm)* im);																							
366         alias da_purple_conv_im_set_typing_state = void function(PurpleConvIm* im, PurpleTypingState state);																			
367         alias da_purple_conv_im_get_typing_state = PurpleTypingState function(const(PurpleConvIm)* im);																					
368         alias da_purple_conv_im_start_typing_timeout = void function(PurpleConvIm* im, int timeout);																					
369         alias da_purple_conv_im_stop_typing_timeout = void function(PurpleConvIm* im);																									
370         alias da_purple_conv_im_get_typing_timeout = guint function(const(PurpleConvIm)* im);																							
371         alias da_purple_conv_im_set_type_again = void function(PurpleConvIm* im, uint val);																								
372         alias da_purple_conv_im_get_type_again = time_t function(const(PurpleConvIm)* im);																								
373         alias da_purple_conv_im_start_send_typed_timeout = void function(PurpleConvIm* im);																								
374         alias da_purple_conv_im_stop_send_typed_timeout = void function(PurpleConvIm* im);																								
375         alias da_purple_conv_im_get_send_typed_timeout = guint function(const(PurpleConvIm)* im);																						
376         alias da_purple_conv_im_update_typing = void function(PurpleConvIm* im);																										
377         alias da_purple_conv_im_write = void function(PurpleConvIm* im, const(char)* who, const(char)* message, PurpleMessageFlags flags, time_t mtime);								
378         alias da_purple_conv_present_error = gboolean function(const(char)* who, PurpleAccount* account, const(char)* what);															
379         alias da_purple_conv_im_send = void function(PurpleConvIm* im, const(char)* message);																							
380         alias da_purple_conv_send_confirm = void function(PurpleConversation* conv, const(char)* message);																				
381         alias da_purple_conv_im_send_with_flags = void function(PurpleConvIm* im, const(char)* message, PurpleMessageFlags flags);														
382         alias da_purple_conv_custom_smiley_add = gboolean function(PurpleConversation* conv, const(char)* smile, const(char)* cksum_type, const(char)* chksum, gboolean remote);		
383         alias da_purple_conv_custom_smiley_write = void function(PurpleConversation* conv, const(char)* smile, const(guchar)* data, gsize size);										
384         alias da_purple_conv_custom_smiley_close = void function(PurpleConversation* conv, const(char)* smile);																			
385         alias da_purple_conv_chat_get_conversation = PurpleConversation* function(const(PurpleConvChat)* chat);																			
386         alias da_purple_conv_chat_set_users = GList* function(PurpleConvChat* chat, GList* users);																						
387         alias da_purple_conv_chat_get_users = GList* function(const(PurpleConvChat)* chat);																								
388         alias da_purple_conv_chat_ignore = void function(PurpleConvChat* chat, const(char)* name);																						
389         alias da_purple_conv_chat_unignore = void function(PurpleConvChat* chat, const(char)* name);																					
390         alias da_purple_conv_chat_set_ignored = GList* function(PurpleConvChat* chat, GList* ignored);																					
391         alias da_purple_conv_chat_get_ignored = GList* function(const(PurpleConvChat)* chat);																							
392         alias da_purple_conv_chat_get_ignored_user = const(char)* function(const(PurpleConvChat)* chat, const(char)* user);																
393         alias da_purple_conv_chat_is_user_ignored = gboolean function(const(PurpleConvChat)* chat, const(char)* user);																	
394         alias da_purple_conv_chat_set_topic = void function(PurpleConvChat* chat, const(char)* who, const(char)* topic);																
395         alias da_purple_conv_chat_get_topic = const(char)* function(const(PurpleConvChat)* chat);																						
396         alias da_purple_conv_chat_set_id = void function(PurpleConvChat* chat, int id);																									
397         alias da_purple_conv_chat_get_id = int function(const(PurpleConvChat)* chat);																									
398         alias da_purple_conv_chat_write = void function(PurpleConvChat* chat, const(char)* who, const(char)* message, PurpleMessageFlags flags, time_t mtime);							
399         alias da_purple_conv_chat_send = void function(PurpleConvChat* chat, const(char)* message);																						
400         alias da_purple_conv_chat_send_with_flags = void function(PurpleConvChat* chat, const(char)* message, PurpleMessageFlags flags);												
401         alias da_purple_conv_chat_add_user = void function(PurpleConvChat* chat, const(char)* user, const(char)* extra_msg, PurpleConvChatBuddyFlags flags, gboolean new_arrival);		
402         alias da_purple_conv_chat_add_users = void function(PurpleConvChat* chat, GList* users, GList* extra_msgs, GList* flags, gboolean new_arrivals);								
403         alias da_purple_conv_chat_rename_user = void function(PurpleConvChat* chat, const(char)* old_user, const(char)* new_user);														
404         alias da_purple_conv_chat_remove_user = void function(PurpleConvChat* chat, const(char)* user, const(char)* reason);															
405         alias da_purple_conv_chat_remove_users = void function(PurpleConvChat* chat, GList* users, const(char)* reason);																
406         alias da_purple_conv_chat_find_user = gboolean function(PurpleConvChat* chat, const(char)* user);																				
407         alias da_purple_conv_chat_user_set_flags = void function(PurpleConvChat* chat, const(char)* user, PurpleConvChatBuddyFlags flags);												
408         alias da_purple_conv_chat_user_get_flags = PurpleConvChatBuddyFlags function(PurpleConvChat* chat, const(char)* user);															
409         alias da_purple_conv_chat_clear_users = void function(PurpleConvChat* chat);																									
410         alias da_purple_conv_chat_set_nick = void function(PurpleConvChat* chat, const(char)* nick);																					
411         alias da_purple_conv_chat_get_nick = const(char)* function(PurpleConvChat* chat);																								
412         alias da_purple_find_chat = PurpleConversation* function(const(PurpleConnection)* gc, int id);																					
413         alias da_purple_conv_chat_left = void function(PurpleConvChat* chat);																											
414         alias da_purple_conv_chat_invite_user = void function(PurpleConvChat* chat, const(char)* user, const(char)* message, gboolean confirm);											
415         alias da_purple_conv_chat_has_left = gboolean function(PurpleConvChat* chat);																									
416         alias da_purple_conv_chat_cb_new = PurpleConvChatBuddy* function(const(char)* name, const(char)* alias_, PurpleConvChatBuddyFlags flags);										
417         alias da_purple_conv_chat_cb_find = PurpleConvChatBuddy* function(PurpleConvChat* chat, const(char)* name);																		
418         alias da_purple_conv_chat_cb_get_name = const(char)* function(PurpleConvChatBuddy* cb);																							
419         alias da_purple_conv_chat_cb_destroy = void function(PurpleConvChatBuddy* cb);																									
420         alias da_purple_conversation_get_extended_menu = GList* function(PurpleConversation* conv);																						
421         alias da_purple_conversation_do_command = gboolean function(PurpleConversation* conv, const(gchar)* cmdline, const(gchar)* markup, gchar** error);								
422         alias da_purple_conversations_get_handle = void* function();																													
423         alias da_purple_conversations_init = void function();																															
424         alias da_purple_conversations_uninit = void function();	
425     }
426 
427     __gshared
428     {
429 	    da_purple_conversation_new purple_conversation_new;
430 	    da_purple_conversation_destroy purple_conversation_destroy;
431 	    da_purple_conversation_present purple_conversation_present;
432 	    da_purple_conversation_get_type purple_conversation_get_type;
433 	    da_purple_conversation_set_ui_ops purple_conversation_set_ui_ops;
434 	    da_purple_conversations_set_ui_ops purple_conversations_set_ui_ops;
435 	    da_purple_conversation_get_ui_ops purple_conversation_get_ui_ops;
436 	    da_purple_conversation_set_account purple_conversation_set_account;
437 	    da_purple_conversation_get_account purple_conversation_get_account;
438 	    da_purple_conversation_get_gc purple_conversation_get_gc;
439 	    da_purple_conversation_set_title purple_conversation_set_title;
440 	    da_purple_conversation_get_title purple_conversation_get_title;
441 	    da_purple_conversation_autoset_title purple_conversation_autoset_title;
442 	    da_purple_conversation_set_name purple_conversation_set_name;
443 	    da_purple_conversation_get_name purple_conversation_get_name;
444 	    da_purple_conv_chat_cb_get_attribute purple_conv_chat_cb_get_attribute;
445 	    da_purple_conv_chat_cb_get_attribute_keys purple_conv_chat_cb_get_attribute_keys;
446 	    da_purple_conv_chat_cb_set_attribute purple_conv_chat_cb_set_attribute;
447 	    da_purple_conv_chat_cb_set_attributes purple_conv_chat_cb_set_attributes;
448 	    da_purple_conversation_set_logging purple_conversation_set_logging;
449 	    da_purple_conversation_is_logging purple_conversation_is_logging;
450 	    da_purple_conversation_close_logs purple_conversation_close_logs;
451 	    da_purple_conversation_get_im_data purple_conversation_get_im_data;
452 	    da_purple_conversation_get_chat_data purple_conversation_get_chat_data;
453 	    da_purple_conversation_set_data purple_conversation_set_data;
454 	    da_purple_conversation_get_data purple_conversation_get_data;
455 	    da_purple_get_conversations purple_get_conversations;
456 	    da_purple_get_ims purple_get_ims;
457 	    da_purple_get_chats purple_get_chats;
458 	    da_purple_find_conversation_with_account purple_find_conversation_with_account;
459 	    da_purple_conversation_write purple_conversation_write;
460 	    da_purple_conversation_set_features purple_conversation_set_features;
461 	    da_purple_conversation_get_features purple_conversation_get_features;
462 	    da_purple_conversation_has_focus purple_conversation_has_focus;
463 	    da_purple_conversation_update purple_conversation_update;
464 	    da_purple_conversation_foreach purple_conversation_foreach;
465 	    da_purple_conversation_get_message_history purple_conversation_get_message_history;
466 	    da_purple_conversation_clear_message_history purple_conversation_clear_message_history;
467 	    da_purple_conversation_message_get_sender purple_conversation_message_get_sender;
468 	    da_purple_conversation_message_get_message purple_conversation_message_get_message;
469 	    da_purple_conversation_message_get_flags purple_conversation_message_get_flags;
470 	    da_purple_conversation_message_get_timestamp purple_conversation_message_get_timestamp;
471 	    da_purple_conv_im_get_conversation purple_conv_im_get_conversation;
472 	    da_purple_conv_im_set_icon purple_conv_im_set_icon;
473 	    da_purple_conv_im_get_icon purple_conv_im_get_icon;
474 	    da_purple_conv_im_set_typing_state purple_conv_im_set_typing_state;
475 	    da_purple_conv_im_get_typing_state purple_conv_im_get_typing_state;
476 	    da_purple_conv_im_start_typing_timeout purple_conv_im_start_typing_timeout;
477 	    da_purple_conv_im_stop_typing_timeout purple_conv_im_stop_typing_timeout;
478 	    da_purple_conv_im_get_typing_timeout purple_conv_im_get_typing_timeout;
479 	    da_purple_conv_im_set_type_again purple_conv_im_set_type_again;
480 	    da_purple_conv_im_get_type_again purple_conv_im_get_type_again;
481 	    da_purple_conv_im_start_send_typed_timeout purple_conv_im_start_send_typed_timeout;
482 	    da_purple_conv_im_stop_send_typed_timeout purple_conv_im_stop_send_typed_timeout;
483 	    da_purple_conv_im_get_send_typed_timeout purple_conv_im_get_send_typed_timeout;
484 	    da_purple_conv_im_update_typing purple_conv_im_update_typing;
485 	    da_purple_conv_im_write purple_conv_im_write;
486 	    da_purple_conv_present_error purple_conv_present_error;
487 	    da_purple_conv_im_send purple_conv_im_send;
488 	    da_purple_conv_send_confirm purple_conv_send_confirm;
489 	    da_purple_conv_im_send_with_flags purple_conv_im_send_with_flags;
490 	    da_purple_conv_custom_smiley_add purple_conv_custom_smiley_add;
491 	    da_purple_conv_custom_smiley_write purple_conv_custom_smiley_write;
492 	    da_purple_conv_custom_smiley_close purple_conv_custom_smiley_close;
493 	    da_purple_conv_chat_get_conversation purple_conv_chat_get_conversation;
494 	    da_purple_conv_chat_set_users purple_conv_chat_set_users;
495 	    da_purple_conv_chat_get_users purple_conv_chat_get_users;
496 	    da_purple_conv_chat_ignore purple_conv_chat_ignore;
497 	    da_purple_conv_chat_unignore purple_conv_chat_unignore;
498 	    da_purple_conv_chat_set_ignored purple_conv_chat_set_ignored;
499 	    da_purple_conv_chat_get_ignored purple_conv_chat_get_ignored;
500 	    da_purple_conv_chat_get_ignored_user purple_conv_chat_get_ignored_user;
501 	    da_purple_conv_chat_is_user_ignored purple_conv_chat_is_user_ignored;
502 	    da_purple_conv_chat_set_topic purple_conv_chat_set_topic;
503 	    da_purple_conv_chat_get_topic purple_conv_chat_get_topic;
504 	    da_purple_conv_chat_set_id purple_conv_chat_set_id;
505 	    da_purple_conv_chat_get_id purple_conv_chat_get_id;
506 	    da_purple_conv_chat_write purple_conv_chat_write;
507 	    da_purple_conv_chat_send purple_conv_chat_send;
508 	    da_purple_conv_chat_send_with_flags purple_conv_chat_send_with_flags;
509 	    da_purple_conv_chat_add_user purple_conv_chat_add_user;
510 	    da_purple_conv_chat_add_users purple_conv_chat_add_users;
511 	    da_purple_conv_chat_rename_user purple_conv_chat_rename_user;
512 	    da_purple_conv_chat_remove_user purple_conv_chat_remove_user;
513 	    da_purple_conv_chat_remove_users purple_conv_chat_remove_users;
514 	    da_purple_conv_chat_find_user purple_conv_chat_find_user;
515 	    da_purple_conv_chat_user_set_flags purple_conv_chat_user_set_flags;
516 	    da_purple_conv_chat_user_get_flags purple_conv_chat_user_get_flags;
517 	    da_purple_conv_chat_clear_users purple_conv_chat_clear_users;
518 	    da_purple_conv_chat_set_nick purple_conv_chat_set_nick;
519 	    da_purple_conv_chat_get_nick purple_conv_chat_get_nick;
520 	    da_purple_find_chat purple_find_chat;
521 	    da_purple_conv_chat_left purple_conv_chat_left;
522 	    da_purple_conv_chat_invite_user purple_conv_chat_invite_user;
523 	    da_purple_conv_chat_has_left purple_conv_chat_has_left;
524 	    da_purple_conv_chat_cb_new purple_conv_chat_cb_new;
525 	    da_purple_conv_chat_cb_find purple_conv_chat_cb_find;
526 	    da_purple_conv_chat_cb_get_name purple_conv_chat_cb_get_name;
527 	    da_purple_conv_chat_cb_destroy purple_conv_chat_cb_destroy;
528 	    da_purple_conversation_get_extended_menu purple_conversation_get_extended_menu;
529 	    da_purple_conversation_do_command purple_conversation_do_command;
530 	    da_purple_conversations_get_handle purple_conversations_get_handle;
531 	    da_purple_conversations_init purple_conversations_init;	
532 	    da_purple_conversations_uninit purple_conversations_uninit;
533     }
534 }